﻿
@{
    ViewBag.Title = "Grammer";
}

<h2>Grammer</h2>

<ol>
    <li>
        存储过程简介
        <ol>
            <li>
                了解什么是存储过程
                <ol>
                    <li>Sql Server提供一种方法：可以将一些预先编译的sql语句集中起来，有sql server数据库服务器来完成以实现某个任务，这就是存储过程。存储过程常驻在sql server数据库服务器的内存中。</li>
                    <li>存储过程(procedure)类似于C语言中的函数</li>
                    <li>用来执行管理任务或复杂的业务逻辑</li>
                    <li>存储过程可以带参数，也可以返回结果</li>
                    <li>
                        存储过程可以包含数据操作语句、变量、逻辑控制语句等
                        <ol>
                            <li>单个Select语句</li>
                            <li>Select语句块</li>
                            <li>Select语句和逻辑控制语句</li>
                        </ol>
                    </li>
                </ol>
            </li>
            <li>
                存储过程的优点
                <ol>
                    <li>存储过程运行速度比较快，比Sql语句的执行速度快2~10倍</li>
                    <li>存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值，可以向程序返回错误原因</li>
                    <li>存储过程运行稳定，错误较少</li>
                    <li>存储过程主要在服务器上运行，减少客户机压力</li>
                    <li>存储过程可以包含程序流、逻辑以及对数据库的查询</li>
                    <li>可以在单个存储过程中执行一系列的查询</li>
                    <li>增加网络流量，降低网络负担，如果使用单条调用语句的方式，就必须传输大量sql语句</li>
                </ol>
            </li>
            <li>
                存储过程创建的基本语法
                <ol>
                    <li>
                        <pre>create proce [EDURE_1 produce_name
[{@@parameter} data_type] 
as
sql_statement</pre>
                    </li>
                </ol>
            </li>
        </ol>
    </li>
    <li>
        存储过程分类及参数使用
        <ol>
            <li>
                了解系统存储过程
                <ol>
                    <li>
                        系统存储过程
                        <ol>
                            <li>由系统定义，存放在master数据库中</li>
                            <li>类似于C语言的系统函数</li>
                            <li>系统存储过的名称都以"sp_"或者"xp_"开头</li>
                            <li>
                                常用的系统存储过程
                                <ol>
                                    <li>sp_databases:列出服务器上的所有数据</li>
                                    <li>sp_helpdb:报告有关指定数据库和指定数据库的信息</li>
                                    <li>sp_renamedb:更改数据库名称</li>
                                    <li>sp_tables:返回当前环境下可查询的对象的列表</li>
                                    <li>sp_columns:返回某个表列的信息</li>
                                    <li>sp_helpconstraint:查看某个表的约束</li>
                                    <li>sp_helpindex:查看某个表的索引</li>
                                    <li>sp_stored_procedures:列出单前环境中的所有存储过程</li>
                                    <li>sp_password:添加或修改登录账户的密码</li>
                                    <li>sp_helptext:显示默认值，未加密的存储过程、用户定义的存储过程、触发器或试图的实际文本</li>
                                </ol>
                            </li>
                        </ol>
                    </li>
                    <li>
                        用户自定义存储过程
                        <ol>
                            <li>由用户在自己的数据库中创建存储过程</li>
                            <li>类似C语言中的用户自定义函数</li>
                            <li>
                                自定义存储过程的语法
                                <pre>create proce[EDURE_1 produce_name
[{@@parameter} data_type] 
as
sql_statement</pre>
                            </li>
                            <li>和C语言的函数一样，参数可选</li>
                            <li>
                                参数分为输入参数、输出参数
                                <ol>
                                    <li>
                                        输入参数
                                        <ol>
                                            <li>用于向存储过程传入值，类似于C语言的值传递</li>
                                        </ol>
                                    </li>
                                    <li>
                                        输出参数
                                        <ol>
                                            <li>用于在调用存储过程后返回结果，类似按C语言的按引用传递</li>
                                        </ol>
                                    </li>
                                </ol>
                            </li>
                            <li>输入参数允许有默认值</li>
                        </ol>
                    </li>
                </ol>
            </li>
            <li>
                掌握存储过程参数类型
                <ol>
                    <li>
                        输入参数
                        <ol>
                            <li>用于向存储过程传入值，类似于C语言的值传递</li>
                        </ol>
                    </li>
                    <li>
                        输出参数
                        <ol>
                            <li>用于在调用存储过程后返回结果，类似按C语言的按引用传递</li>
                        </ol>
                    </li>
                </ol>
            </li>
        </ol>
    </li>
    <li>
        存储过程的常规操作
        <ol>
            <li>存储过程实现添加表操作</li>
            <li>存储过程实现修改表操作</li>
            <li>存储过程实现删除表操作</li>
            <li>存储过程实现查询表操作</li>
        </ol>
    </li>
    <li>
        存储过程和视图结合使用
        <ol>
            <li>
                掌握视图的创建
                <ol>
                    <li>什么是视图？
                        <ol>
                            <li>在sql中，视图是基于sql语句结果集的可视化表</li>
                            <li>视图包含行和列，就像一张真实的表</li>
                            <li>注释：数据库中的设计和结构不会受到视图中的函数、where、join语句的影响</li>
                        </ol>
                    </li>
                    <li>视图的优点
                        <ol>
                            <li>
                                视图运行比select快
                            </li>
                            <li>
                                视图可以保护表中的数据，当要保护表中的数据时，可以创建一个视图
                            </li>
                            <li>
                                视图可以来自多个表的管理、查询、分类、子查询。然后对视图的查询非常简单，就像对单个表查询一样的，
                            </li>
                        </ol>
                    </li>
                    <li>
                        视图的基本语法
                        <ol>
                            <li>
                                自定义视图的语法
                                <pre>create view view_name
as
column_names(s) from table_name where condition</pre>
                            </li>
                        </ol>
                    </li>
                </ol>
            </li>
            <li>
                掌握在存储过程中使用视图
            </li>
        </ol>
    </li>
    <li>
        认识数据库函数
        <ol>
            <li>函数的定义
                <ol>
                    <li>与编程语言中的函数相似，用户定义函数是接受参数，执行操作(例如复杂计算)，并将操作结果以值得形式返回的例程，返回值可以是单个标量值或者结果集。</li>
                </ol>
            </li>
            <li>
                函数的优点
                <ol>
                    <li>允许模块化程序设计</li>
                    <li>执行速度更快</li>
                    <li>较少网络流量</li>
                </ol>
            </li>
            <li>
                函数分类
                <ol>
                    <li>
                        系统函数
                    </li>
                    <li>
                        用户函数
                        <ol>
                            <li>标量函数</li>
                            <li>表值函数</li>
                            <li>函数实例
                                <pre>create function function_name
@@Date datetime
returns int
as
begin
performs the action
end;
go</pre>
                            </li>
                        </ol>
                    </li>
                </ol>
            </li>
            <li>
                能创建数据库函数
            </li>
            <li>
                在存储过程调用函数
            </li>
        </ol>
    </li>
    <li>
        在应用程序中创建存储过程
        <ol>
            <li>
                了解Ado.Net核心对象
                <ol>
                    <li>Ado.Net核心对象
                         <ol>
                             <li>Command:命令对象</li>
                             <li>Connection:连接对象</li>
                             <li>DataAdapter:适配器对象</li>
                             <li>DataSet:数据集合对象</li>
                             <li>DataTable:数据表对象</li>
                         </ol>
                    </li>
                    <li>
                        使用Commond对象来更改数据库
                        <ol>
                            <li>在Ado.Net中调用存储过程
                                 <ol>
                                     <li>必须指定命令对象执行类型：存储过程(CommandType.StoredProcedure)</li>
                                     <li>如果存储过程定义了参数，则在应用程序中必须给应用程序传递参数</li>
                                 </ol>
                            </li>
                        </ol>
                    </li>
                </ol>
            </li>
            <li>
                使用存储过程实现业务操作
            </li>
        </ol>
    </li>
    <li>
        在Linq中使用存储过程
        <ol>
            <li>了解Linq
                <ol>
                    <li>Linq简介
                        <ol>
                            <li>语言集成查询(Linq)在对象领域和数据领域架起了一座桥梁</li>
                            <li>Linq提供了一种跨越各种数据源和数据格式使数据一致模型</li>
                            <li>微软的ORM解决方案</li>
                            <li>linq项目解决方案应面向.net3.5</li>
                            <li>VS2008以上版本对Linq的强大支持</li>
                        </ol>
                    </li>
                    <li>
                        Linq简介
                        <ol>
                            <li>Linq to Sql会将对象中的语言集成查询转为sql，让后将它们发送到数据库进行执行</li>
                            <li>当数据库返回结果时Linq to sql会将转换为你可以用自己编程语言处理的对象</li>
                            <li>VS 2008及以上版本提供Linq(O/R设置器)</li>
                        </ol>
                    </li>
                </ol>
            </li>
            <li>掌握在Linq中使用存储过程</li>
        </ol>
    </li>
    <li>
        创建通用存储过程
        <ol>
            <li>
                掌握简单的数据库编程
            </li>
            <li>
                实现通用的删除功能
            </li>
            <li>
                实现通用的修改功能
            </li>
        </ol>
    </li>
</ol>